//
//  defineAll.h
//  Chapter_1
//
//  Created by hao on 18/3/18.
//  Copyright © 2018年 hao. All rights reserved.
//

// 该头文件定义了所有需要需要使用的结构体
#ifndef defineAll_h
#define defineAll_h
#define defineAllStruct_h

#include <stdlib.h>
#include <string.h>

#define TPL_MAX_SIZE    10
#define TPL_NOT_FOUND   -1
#define TPL_TRUE        1
#define TPL_FALSE       0

typedef int ElementType;
typedef int Position;

// 顺序线性表
typedef struct LNode *List;
struct LNode {
    ElementType data[TPL_MAX_SIZE];
    Position last; /* 保存线性表中最后一个元素的位置 */
};

// 两个宏都表示链表为空
#define TPL_LIST_EMPTY    0
#define TPL_LIST_NULL     NULL

// 定义了一个单向链表的结构体
typedef struct SinglyLinkedNode *SinglyList;
struct SinglyLinkedNode {
    ElementType data;
    SinglyList next;
};
//SinglyList PtrL;


typedef SinglyList QueueNode;  // 队列中的节点
typedef struct QueueL *QueueList; // 队列
struct QueueL {
    QueueNode fornt;  // 表示队头
    QueueNode rear;   // 队尾
};

typedef struct PolyNode *PolynomialNode;
struct PolyNode {
    int coeff;  // 系数
    int exp;    // 指数
    PolynomialNode next; // 下一项
};

typedef struct TreeNode *Tree;
// left表左结点，right表右结点
struct TreeNode {
    int intData;
    char charData;
    Tree left;
    Tree right;
};

#endif /* defineAll_h */


